perm filename PRANDR.SAI[BIG,HPM] blob sn#390206 filedate 1978-10-25 generic text, type T, neo UTF8
PROCEDURE PWITHR(INTEGER ARRAY A; INTEGER N; REFERENCE BOOLEAN LAST);
comment  collected algorithms #306 substitute for random permutations;
   BEGIN
   INTEGER I,J,K,L;
   INTEGER ARRAY B[1:N];
   IF LAST THEN BEGIN RAN(CALL(0,"TIMER")); LAST←FALSE; END;
   FOR I←1 STEP 1 UNTIL N DO B[I]←A[I];
   FOR I←1 STEP 1 UNTIL N DO
      BEGIN
      J←(N-I+1)*RAN(0);
      L←1;
      FOR K←0 STEP 1 UNTIL J DO BEGIN WHILE B[L]=-1 DO L←L+1; L←L+1; END;
      A[I]←B[L-1];
      B[L-1]←-1;
      END;
   END;